The present invention is generally directed to computer systems, and more particularly to visualization and modeling in computer systems.
Visualization and modeling software is extensively used in industry. Visualization generally refers to computer tools for viewing existing layouts, such as for viewing a representation of a network topology, an electrical wiring system or various other things that are designed. Visualization has general relevance in various applications, e.g., viewing a network topology is a scenario that is applicable to many different products. Modeling refers to computer tools used to design things, such as software, databases, integrated circuits, CAD/CAM applications and the like. Thus, in general, in visualization, a user looks at interconnected model elements placed on a viewing surface. In modeling, a user places the model elements on a work surface and connects them together in some manner. The semantics of connecting two or more model elements using other model elements is the fundamental operation in modeling and visualization.
However, existing visualization and modeling tools have a number of drawbacks, including that the developers of the tools have made them closed and proprietary. For example, the rules and semantics of connecting two or more model elements together are embedded in the modeling tool, e.g., an integrated circuit design tool will allow or disallow a connection between two elements based on some hard-coded knowledge about those elements. As a consequence, the tool that has the hard-coded rules and semantics, and the model elements, typically come from the same vendor, or at least come from sources having detailed knowledge of one another, resulting in a closed and proprietary tool in which independent software vendors (ISVs) or other third parties cannot participate. Moreover, existing tools are essentially not extensible, but rather require a newer version from the vendor each time updates (e.g., to modify the hard-coded rules or semantics) are required.
Further, existing modeling and visualization products use a static work surface that is essentially a display of a given area of a layout, along with static model elements. For example, when modeling, a user simply drops static modeling elements onto a static surface, or works with the tool to connect such elements together on the surface.
Moreover, because existing visualization and modeling tools are closed and proprietary, the file formats that store the designs are proprietary. As a result, another drawback with these existing tools is that they work with data in their own proprietary file formats, and thus there is no interoperability between various tools.
Briefly, the present invention provides a dynamic, live surface and/or model elements to complement and enhance what is being modeled or visualized, enabling the addition of new features and functionality to visualization and modeling tools. Moreover, completed designs may be saved in a non-proprietary format, such as HTML (HyperText Markup Language). To this end, the surface comprises an object such as an ActiveX(copyright) control having defined interfaces, properties and methods. Among other functions, the surface raises and responds to events. The model elements are also objects having interfaces, properties and methods, and also raise and respond to events.
In one implementation, a dynamic surface is accomplished by extending traditional HTML or the rendering APIs and components to enable visualization and modeling functionality. The surface background, and the model elements thus may be HTML elements, and, for example, the surface can comprise a Web site accessible by a URL. The model elements are HTML elements layered on top of the surface dynamically, as the user interacts with them. When the user is done using the tool, the state of the diagram may be saved as standard HTML. More particularly, in this implementation, the live surface bases its services on the HTML services in an HTML rendering engine, and further provides a visualization and modeling engine (VME) that wraps and extends the rendering engine through multiple interfaces. Such interfaces include interfaces to enumerate the modeling elements (e.g., nodes and arcs) and their relationships, to add, delete or change node/arc connections, and to initialize the VME surface, including loading an existing diagram or initializing a new diagram. VME services are available as an extension to the rendering engine object model for programming from within the HTML page, and also from the tool/shell hosting VME. These and many other interfaces provide numerous capabilities unavailable with a static surface.
By way of example, a URL (Uniform Resource Locator) can be specified to act as the background or the starting point for a new diagram. Thus, a live HTML page of the United States weather map can be used as a surface for visualizing a topology of network servers across the country. A live surface is also useful when designing a database schema, wherein having a dynamic surface enables the use of a background HTML page which walks the user through the steps as the user creates the schema, e.g., the background content changes in response to user actions, dynamically providing help and/or correcting users as they make mistakes. The dynamic surface and model elements can also be used to link external sources of information or related visualization/modeling diagrams. Collaborative modeling is also possible via the live surface and model elements.
Other advantages will become apparent from the following detailed description when taken in conjunction with the drawings, in which: